﻿Imports System.Data.SqlClient
Imports Logica

Partial Class ModificarMeta
    Inherits System.Web.UI.Page

    ''' <summary>
    ''' Llena los campos.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim meta As Hashtable = Nothing
        Dim metas As List(Of Hashtable)

        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 58) Then
            Response.Redirect("SinPermisos.aspx")
        End If

        If IsPostBack Then
            Exit Sub
        End If

        Try
            If Request.QueryString("idMeta") Is Nothing Then
                Throw New Exception("No se ha seleccionado la meta.")
            End If

            metas = Gestor.consultarMetas(Request.QueryString("idUsuario"))

            For Each m As Hashtable In metas
                If m("codigo") = Request.QueryString("idMeta") Then
                    meta = m
                    Exit For
                End If
            Next

            If Not meta Is Nothing Then
                txtDescripcion.Text = meta("descripcion")
                txtFechaInicio.Text = CDate(meta("fechaInicio")).ToString("dd/MM/yyyy")
                txtFechaEsperada.Text = CDate(meta("fechaEsperada")).ToString("dd/MM/yyyy")

                If CDate(meta("fechaReal")).ToString("dd/MM/yyyy") <> "01/01/0001" Then
                    txtFechaReal.Text = CDate(meta("fechaReal")).ToString("dd/MM/yyyy")
                End If
            Else
                Throw New Exception("La meta no existe.")
            End If
        Catch exc As SqlException
            btnModificar.Enabled = False
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Error de conexión."
        Catch exc As Exception
            btnModificar.Enabled = False
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = exc.Message
        End Try
    End Sub

    ''' <summary>
    ''' Valida los campos y modifica la meta.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub btnModificar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Dim fechaInicio As Date
        Dim fechaEsperada As Date
        Dim fechaReal As Date

        Try
            If txtDescripcion.Text.Trim = "" Then
                Throw New Exception("El campo 'Descripción' está vacío.")
            ElseIf txtFechaInicio.Text.Trim = "" Then
                Throw New Exception("El campo 'Fecha de Inicio' está vacío.")
            ElseIf txtFechaEsperada.Text.Trim = "" Then
                Throw New Exception("El campo 'Fecha Esperada' está vacío.")
            End If

            ' TODO: Arreglar eso.
            If txtFechaReal.Text.Trim = "" Then
                fechaReal = New Date(0)
            Else
                fechaReal = CDate(txtFechaReal.Text)
            End If

            fechaInicio = CDate(txtFechaInicio.Text)
            fechaEsperada = CDate(txtFechaEsperada.Text)

            If fechaEsperada < fechaInicio Or fechaReal < fechaInicio Then
                Throw New Exception("La fecha esperada y la fecha real no pueden ser anteriores a la fecha inicio.")
            End If

            Gestor.modificarMeta(Request.QueryString("idMeta"), txtDescripcion.Text, fechaInicio, fechaEsperada, fechaReal)

            Response.Redirect("ConsultarMetas.aspx?id=" & Request.QueryString("idUsuario"))
        Catch ex As InvalidCastException
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "El formato de la fecha ingresada es inválido."
        Catch exc As SqlException
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Error de conexión."
        Catch exc As Exception
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = exc.Message
        End Try
    End Sub
End Class
